package work1
// 5：输出斐波拉切数列的前N项，N由用户输入。
// 斐波拉切数列的定义是前两个是1，后面的每一个是前面的两个和 ，比如N是5,则输出结果是1,1,2,3,5
import scala.io.StdIn.readLine

object Fibonacci {
  def main(args: Array[String]): Unit = {
    print("请输入N：")
    val n = readLine().toInt
    println(s"斐波那契数列的前n项是：${fibonacci(n).mkString(", ")}")
  }

  def fibonacci(n: Int): List[Int] = {
    if (n <= 0) List()
    else if (n == 1) List(1)
    else if (n == 2) List(1, 1)
    else {
      val fibs = List(1, 1)
      (2 until n).foldLeft(fibs) { (acc, _) =>
        acc :+ (acc(acc.length - 1) + acc(acc.length - 2))
      }
    }
  }
}